package com.nicolas.pattern.iterator;

import java.util.List;

/**
 * ConcreteAggregate（具体聚合类）：它实现了在抽象聚合类中声明的createIterator()方法，
 * 该方法返回一个与该具体聚合类对应的具体迭代器ConcreteIterator实例。
 * @author nicolas  2017年2月12日 -- 下午8:44:20
 * 商品数据类：具体聚合类 
 */
public class ProductList extends AbstractObjectList {  
    public ProductList(List products) {  
        super(products);  
    }  
      
    //实现创建迭代器对象的具体工厂方法  
    public AbstractIterator createIterator() {  
        return new ProductIterator(this);  
    }  
    
  //商品迭代器：具体迭代器，内部类实现  
//    private class ProductIterator implements AbstractIterator {  
//        private int cursor1;  
//        private int cursor2;  
//          
//        public ProductIterator() {  
//            cursor1 = 0;  
//            cursor2 = objects.size() -1;  
//        }  
//          
//        public void next() {  
//            if(cursor1 < objects.size()) {  
//                cursor1++;  
//            }  
//        }  
//          
//        public boolean isLast() {  
//            return (cursor1 == objects.size());  
//        }  
//          
//        public void previous() {  
//            if(cursor2 > -1) {  
//                cursor2--;  
//            }  
//        }  
//          
//        public boolean isFirst() {  
//            return (cursor2 == -1);  
//        }  
//          
//        public Object getNextItem() {  
//            return objects.get(cursor1);  
//        }   
//              
//        public Object getPreviousItem() {  
//            return objects.get(cursor2);  
//        }     
//    }  
}
